#pragma once

#include <sys_def.h>

// 函数类型：写一个字节，参数为要写的字节（仅低8位有效）。
typedef void trans_write_byte_ft(u32_s byte);

// 函数类型：读一个字节，返回值为读到的字节，仅低8位有效。
typedef u32_s trans_read_byte_ft(void);

void trans_read_start_end(u8_s* start_p, const u8_s* endn_p,
			  trans_read_byte_ft read_f);

// 用给定函数读若干字节。
static inline void trans_read_bytes(u8_s space_b[], u32_s size,
				    trans_read_byte_ft read_f) {
	trans_read_start_end(space_b, space_b + size, read_f);
}

void trans_write_str(const char str_b[], trans_write_byte_ft write_f);

void trans_write_uhex(u32_s n, u32_s hex_len,
		      trans_write_byte_ft write_f);

void trans_write_udec(u32_s n, trans_write_byte_ft write_f);

void trans_write_idec(i32_s n, trans_write_byte_ft write_f);
